package generator.gridgain;

import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;

import generator.WritebleClass;
import generator.utils.TransformDocs;

import org.w3c.dom.Document;

/**
 * Esta clase envuelve a la clase Document de modo de implementar los métodos  de la interface WritableClass utilizada por       {@link GridCodeGenerator}      .
 * 
 */

public class DocumentWrapper implements WritebleClass {
	
	String styleSheet = "conf//javaxml-to-plain-source.xsl";
	
	Document doc;	
	
	/**Constructor de {@link DocumentWrapper} que recibe el documento al que se le aplicará el
	 * wrapper*/
	public DocumentWrapper(Document doc){
		this.doc = doc;	
	}
	
	/**
	 * permite setear la hoja de estilo que se utilizará en la implementación del método  export
	 * @uml.property  name="styleSheet"
	 */
	public void setStyleSheet(String styleSheet){
		this.styleSheet = styleSheet;		
	}

	/**
	 * Método encargado de exportar la clase que representa el presente objeto
	 * en el directorio destino pasado como parametro.
	 * 
	 * @param destDirectory directorio destino donde se quiere guardar la clase.
	 */
	public void export(String destDirectory){
		try {
			String className = (String)XPathFactory.newInstance().newXPath().evaluate("//java-class-file/@name", doc, XPathConstants.STRING);
			TransformDocs.domToJavaSource(doc, destDirectory+className, styleSheet);
		} catch (Exception e) {			
			e.printStackTrace();			
		}
	}
}
